package net.aiion.weave.impl.bytecode.events;

import net.aiion.weave.spi.bytecode.events.AnnotationEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationEnumValueBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationStartBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.AnnotationValueBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.BytecodeEvent;
import net.aiion.weave.spi.bytecode.events.ClassEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.ClassStartBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.CodeEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.CodeStartBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.FieldEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.FieldStartBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.InstructionBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.MethodEndBytecodeEvent;
import net.aiion.weave.spi.bytecode.events.MethodStartBytecodeEvent;

public abstract class BytecodeEventImpl implements BytecodeEvent
{
    private boolean isNatural;

    public BytecodeEventImpl() {
    }

    @Override
    public final ClassStartBytecodeEvent asClassStart() {
        return (ClassStartBytecodeEvent) this;
    }

    @Override
    public final AnnotationStartBytecodeEvent asAnnotationStart() {
        return (AnnotationStartBytecodeEvent) this;
    }

    @Override
    public final AnnotationValueBytecodeEvent asAnnotationValue() {
        return (AnnotationValueBytecodeEvent) this;
    }

    @Override
    public final AnnotationEnumValueBytecodeEvent asAnnotationEnumValue() {
        return (AnnotationEnumValueBytecodeEvent) this;
    }

    @Override
    public final AnnotationEndBytecodeEvent asAnnotationEnd() {
        return (AnnotationEndBytecodeEvent) this;
    }

    @Override
    public FieldStartBytecodeEvent asFieldStart() {
        return (FieldStartBytecodeEvent) this;
    }

    @Override
    public FieldEndBytecodeEvent asFieldEnd() {
        return (FieldEndBytecodeEvent) this;
    }

    @Override
    public final MethodStartBytecodeEvent asMethodStart() {
        return (MethodStartBytecodeEvent) this;
    }

    @Override
    public final CodeStartBytecodeEvent asCodeStart() {
        return (CodeStartBytecodeEvent) this;
    }

    @Override
    public final InstructionBytecodeEvent asInstruction() {
        return (InstructionBytecodeEvent) this;
    }

    @Override
    public final CodeEndBytecodeEvent asCodeEnd() {
        return (CodeEndBytecodeEvent) this;
    }

    @Override
    public final MethodEndBytecodeEvent asMethodEnd() {
        return (MethodEndBytecodeEvent) this;
    }

    @Override
    public final ClassEndBytecodeEvent asClassEnd() {
        return (ClassEndBytecodeEvent) this;
    }

    public void setNatural(final boolean aNatural) {
        isNatural = aNatural;
    }

    public boolean isNatural() {
        return isNatural;
    }
}
